\chapter{Présentation}\label{ch:actionStruts}

%\section
%\subsection
%\subsubsection
%\paragraph{Import à partir d'un fichier}



%\section{Pré-requis}
%Divers élèments composent notre application et sont donc nécessaires pour la comprendre et la modifier.

%\begin{itemize}
%	\item{Struts 2} Le côté serveur de notre application est assuré par le framework Struts 2.
%	\item{Java} Langage de réalisation du back-end. 
%	\item{JavaScript} Essentiel à l'affichage dynamique, en particulier pour nos éditeurs XML.
%	\item{SQL} Base de SQL
%\end{itemize}

\section{Contexte}

L'objectif de \nomproj est de simplifier la chaine de réalisation de création d'indicateurs, depuis l'étape d'import de fichier de log jusqu'à leur intégration dans la base de données et leur affichage sous forme de rapport.

Dans son état initial, l'ensemble des configuration est réalisé par 3 fichiers (1 fichier de configuration et 2 fichiers xml). Ceux-ci doivent être édité à la main et ne peuvent être testé qu'en faisant des appels manuel au système tout en allant vérifier les différents élèments affectés en ligne de commande.

Nous cherchons donc à proposer une solution qui soit indépendante de la machine de travail, facilite les vérifications, \ldots tout en offrant une rétrocompatibilité par rapport aux fichiers déjà réalisés.

\section{Environnement de développement}

L'environnement de développement de \nomproj est le même que celui de PRISME. Néanmoins, voici la liste exhaustive des éléments caractérisant le développement du projet \nomproj.

\begin{itemize}

\item \emph{Java} : Java 1.5
\item \emph{IDE} : Eclipse Java EE, Version: Indigo Service Release 2
\item \emph{Serveur web} : Apache Tomcat 5.5 {\color{red}Attention, le support de cette version s'arrete le 30 septembre 2012!!}
\item \emph{navigateur} : Mozilla Firefox version 14 lié à Firebug 1.10.2 (au 23 août 2012)
\item \emph{framework} : Apache Struts 2.0, architecture MVC.

\end{itemize}

\section{Une application structuré par Struts 2}
Le framework Struts fonctionne autour du modèle MVC, les actions que l'on souhaite réaliser doivent passer par le contrôleur et donc hériter de la classe \textit{Action} fourni par Struts. Néanmoins, un certain nombre de fonction et service doivent être assurés pour l'ensemble de nos actions, l'héritage de \textit{Action} est donc réalisé par \textit{BaseAction}. Elle assure ainsi les services de connexion à la base de données et de lecture du fichier de configuration \textit{global.properties}.

Le diagramme \ref{actionUml} montre les diverses classes d'action définies. Celle-ci réponde à nos 3 services, et aux deux types nécessaires : les classes d'action de chargement de page, et les classes d'action d'appel dynamique Ajax. Toutes les autres classes étudiées dans ce rapport ont un lien immédiat avec ce diagramme.

\begin{figure}
\centering
\includegraphics[scale=0.7]{../img/actionStrutsUml.png}
\caption{Diagramme de classe des actions Struts dédiées aux éditeurs}
\label{actionUml}
\end{figure}

%\begin{wrapfigure}{r}{45mm}
%\centering
%\includegraphics{img/tableau.jpeg}
%\caption{XSS vulnerabilities over time}
%\label{tab}
%\end{wrapfigure}


